聚合
1> 在整个 DataFrame 上应用聚合
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 1.585409 1.580973 1.049601 0.859623
# 2019-01-02 -0.396824 0.511168 1.085146 0.391574
# 2019-01-03 -0.059131 0.954592 0.033772 -0.620811
print(f'聚合结果:\n{rl_df.aggregate(np.sum)}')
# 输出结果:
# 聚合结果:
# A B C D
# 2019-01-01 1.585409 1.580973 1.049601 0.859623
# 2019-01-02 1.188585 2.092141 2.134748 1.251197
# 2019-01-03 1.129454 3.046733 2.168519 0.630386
2> 在 DataFrame 的单列上应用聚合
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 1.657646 -0.067874 -1.529391 0.368396
# 2019-01-02 -1.023714 -0.562762 -0.965303 -0.493400
# 2019-01-03 -0.206236 -0.026148 1.057269 0.004974
print(f'聚合结果:\n{rl_df["A"].aggregate(np.sum)}')
# 输出结果:
# 聚合结果:
# 2019-01-01 1.657646
# 2019-01-02 0.633932
# 2019-01-03 0.427696
# Freq: D, Name: A, dtype: float64
3> 在 DataFrame 的多列上应用聚合
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 -1.356916 -1.901553 -1.051033 -0.262420
# 2019-01-02 -0.232712 -1.326082 0.764393 0.675415
# 2019-01-03 0.170601 1.210256 1.065309 1.775079
print(f'聚合结果:\n{rl_df["A","C"].aggregate(np.sum)}')
# 输出结果:
# 聚合结果:
# A C
# 2019-01-01 -1.356916 -1.051033
# 2019-01-02 -1.589628 -0.286640
# 2019-01-03 -1.419027 0.778668
4> 在 DataFrame 的单列上应用多个函数
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 0.093778 0.563609 -0.070347 0.472764
# 2019-01-02 0.712117 -0.196268 -0.183463 1.627497
# 2019-01-03 0.294265 1.155061 0.460007 1.361021
print(f'聚合结果:\n{rl_df["A"].aggregate([np.sum,np.mean])}')
# 输出结果:
# 聚合结果:
# sum mean
# 2019-01-01 0.093778 0.093778
# 2019-01-02 0.805895 0.402947
# 2019-01-03 1.100160 0.366720
print(f'初识数组聚合结果:\n{df["A"].aggregate([np.sum,np.mean])}')
# 输出结果:
# 初识数组聚合结果:
# sum 1.10016
# mean 0.36672
# Name: A, dtype: float64
5> 在 DataFrame 的多列上应用多个函数
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 -0.326311 1.303446 -0.388956 -0.554591
# 2019-01-02 -1.148068 1.637101 -0.684822 0.603743
# 2019-01-03 0.913430 0.327187 -1.268619 -1.254668
print(f'聚合结果:\n{rl_df[["A","B"]].aggregate([np.sum,np.mean])}')
# 输出结果:
# 聚合结果:
# A B
# sum mean sum mean
# 2019-01-01 -0.326311 -0.326311 1.303446 1.303446
# 2019-01-02 -1.474379 -0.737189 2.940547 1.470273
# 2019-01-03 -0.560949 -0.186983 3.267734 1.089245
6> 将不同函数应用于 DataFrame 的不同列
df = pd.DataFrame(np.random.randn(3,4), index = pd.date_range('1/1/2019', periods = 3),columns = ["A","B","C","D"])
rl_df = df.rolling(window = 3, min_periods = 1)
print(f'初始数组:\n{df}')
# 输出结果:
# 初始数组:
# A B C D
# 2019-01-01 -0.825357 1.625349 -0.866792 0.516320
# 2019-01-02 0.078847 1.223719 -1.860850 -0.761799
# 2019-01-03 -1.622735 -1.373171 0.496337 0.946703
print(f'聚合结果:\n{rl_df.aggregate({"A":np.sum,"B":np.mean})}')
# 输出结果:
# 聚合结果:
# A B
# 2019-01-01 -0.825357 1.625349
# 2019-01-02 -0.746509 1.424534
# 2019-01-03 -2.369244 0.491965